package com.knowledge.plus.代理.动态代理.JDK动态代理;

import java.lang.reflect.Proxy;

/**
 * 获取代理对象的工厂类
 *
 * @author PF.Tian
 * @since 2021/09/13
 */
public class JdkProxyFactory {

    /**
     * getProxy() ：
     * 主要通过Proxy.newProxyInstance（）方法获取某个类的代理对象
     */
    public static Object getProxy(Object target) {
        return Proxy.newProxyInstance(
                target.getClass().getClassLoader(), // 目标类的类加载
                target.getClass().getInterfaces(),  // 代理需要实现的接口，可指定多个
                new DebugInvocationHandler(target)   // 代理对象对应的自定义 InvocationHandler
        );
    }

    public static void main(String[] args) {
        SmsService smsService = (SmsService) JdkProxyFactory.getProxy(new SmsServiceImpl());
        smsService.send("java");
    }

}
